<?php

abstract class GestionnaireMessage {
	public abstract function recevoir();
	public abstract function envoyer($msg);
	public abstract function mettreEnAttente($msg);

	protected function debug($info) {
		echo "\n* ".date("j-m-Y_h:i:s")." ".get_called_class(). " ".$info;
	}
	public function traiterLesMessagesEntrants(){
		while ( ($msg=$this->recevoir()) != NULL) {
			$status="ERREUR";
			if ( 
				$msg->get('titre') !=NULL && 
				$msg->get('contenu')!=NULL 
			) {
				$status="OK";
			} 
			$this->debug ("Reception $status du message : ".print_r($msg, true));
		}
	}
	
	public function traiterLesMessagesSortants(){
		while ( ($msg=$this->recevoir()) != NULL) {
			$status="ERREUR";
			if ( 
				$msg->get('titre') !=NULL && 
				$msg->get('contenu')!=NULL 
			) {
			$status="OK";
			} 
			$this->debug ("Reception $status du message : ".print_r($msg, true));
			
			if ($status=="OK"){
				if ( isset($dateSeuil) && DateTime::diff( new DateTime("now"), $dateSeuil)< 0) {
					$this->debug ("Mise en attente du message: ".print_r($msg, true));
					$this->mettreEnAttente($msg);
				} else {
					$this->envoyer($msg);
				}
			} else {
				$this->debug ("Reception $status du message : ".print_r($msg, true));
			}
		}
	}
}
?>